#include <stdio.h>
#include <string.h>
int main(int argc, char const *argv[])
{
    char a[1000], b[1000];
    int strs[1000], strs1[1000], strs2[1000];
    int t = 0, n = 0, alen = 0, blen = 0, i = 0;
    scanf("%d", &t);
    while (t--)
    {
        n = 0;//用来计算大于10时进一
        //初始化
        memset(strs, 0, sizeof(strs));
        memset(strs1, 0, sizeof(strs1));
        memset(strs2, 0, sizeof(strs2));

        scanf("%s %s", a, b);
        //求 a,b 数组内元素长度
        alen = strlen(a);
        blen = strlen(b);
        //a数组长度 大于b数组长度
        if (alen > blen)
        {
            n = alen - blen;//位数差值
            for (i = 0; i < alen; i++)
            {
                strs1[i] = a[i] - '0';
                if (i < blen)//在数组b长度范围内
                {
                    strs2[i + n] = b[i] - '0';//挪位 相当于补0 
                }
            }
        }
        else
        {
            n = blen - alen;
            for (i = 0; i < blen; i++)
            {
                strs2[i] = b[i] - '0';
                if (i < alen)
                {
                    strs1[i + n] = a[i] - '0';
                }
            }
        }
        //让alen保持最大
        if (alen < blen)
        {
            n = alen;
            alen = blen;
            blen = n;
        }

        n = 0;
        for (i = alen - 1; i >= 0; i--)
        {
            strs[i] = strs1[i] + strs2[i] + n;
            n = 0;
            if (i > 0)
            {
                //两者相加如果大于10则前一位进一
                if (strs[i] >= 10)
                {
                    strs[i] = strs[i] % 10;//9+9=18,最大取8
                    n = 1;
                }
            }
        }
        //正序输出
        for (i = 0; i < alen; i++)
            printf("%d", strs[i]);

        printf("\n");
    }

    return 0;
}
